home *** CD-ROM | disk | FTP | other *** search
/ Kit PC World De Ampliacion De Windows 95 / Kit PC World de ampliacion de Windows 95.iso / internet / sweeper / include / wininet.h < prev   
C/C++ Source or Header  |  1995-11-02  |  41KB  |  1,443 lines

  1. /*++
  2.  
  3. Copyright (c) 1995  Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     wininet.h
  8.  
  9. Abstract:
  10.  
  11.     Contains manifests, macros, types and prototypes for Microsoft Windows
  12.     Internet Extensions
  13.  
  14. --*/
  15.  
  16. #if !defined(_WININET_)
  17. #define _WININET_
  18.  
  19. #if defined(__cplusplus)
  20. extern "C" {
  21. #endif
  22.  
  23. #if !defined(_WINX32_)
  24. #define INTERNETAPI DECLSPEC_IMPORT
  25. #else
  26. #define INTERNETAPI
  27. #endif
  28.  
  29. //
  30. // internet types
  31. //
  32.  
  33. typedef LPVOID HINTERNET;
  34. typedef HINTERNET * LPHINTERNET;
  35.  
  36. typedef WORD INTERNET_PORT;
  37. typedef INTERNET_PORT * LPINTERNET_PORT;
  38.  
  39. //
  40. // Internet APIs
  41. //
  42.  
  43. //
  44. // manifests
  45. //
  46.  
  47. #define INVALID_PORT_NUMBER             0           // use the protocol-specific default
  48.  
  49. #define INTERNET_DEFAULT_FTP_PORT       21          // default for FTP servers
  50. #define INTERNET_DEFAULT_GOPHER_PORT    70          //    "     "  gopher "
  51. #define INTERNET_DEFAULT_HTTP_PORT      80          //    "     "  HTTP   "
  52.  
  53. //
  54. // maximum field lengths (arbitrary)
  55. //
  56.  
  57. #define INTERNET_MAX_HOST_NAME_LENGTH   256
  58. #define INTERNET_MAX_USER_NAME_LENGTH   128
  59. #define INTERNET_MAX_PASSWORD_LENGTH    128
  60. #define INTERNET_MAX_PORT_NUMBER_LENGTH 5           // INTERNET_PORT is unsigned short
  61. #define INTERNET_MAX_PORT_NUMBER_VALUE  65535       // maximum unsigned short value
  62. #define INTERNET_MAX_PATH_LENGTH        MAX_PATH    // same as Windows
  63. #define INTERNET_MAX_PROTOCOL_NAME      "gopher"    // longest protocol name
  64. #define INTERNET_MAX_URL_LENGTH         ((sizeof(INTERNET_MAX_PROTOCOL_NAME) - 1) \
  65.                                         + sizeof("://") \
  66.                                         + INTERNET_MAX_PATH_LENGTH)
  67.  
  68. //
  69. // flags common to open functions:
  70. //
  71.  
  72. #define INTERNET_OPEN_FLAG_NO_CACHE     0x80000000  // retrieve the item from the Internet
  73.  
  74. //
  75. // flags for InternetOpenUrl():
  76. //
  77.  
  78. #define INTERNET_OPEN_FLAG_RAW_DATA     0x40000000  // receive the item as raw data
  79. #define INTERNET_OPEN_FLAG_USE_EXISTING 0x20000000  // do not create new connection object
  80.  
  81. //
  82. // flags common to various Internet APIs:
  83. //
  84.  
  85. #define INTERNET_FLAG_ASYNC             0x10000000  // this request is asynchronous (where supported)
  86. #define INTERNET_FLAG_KEEP_CONNECTION   0x08000000  // used for HTTP Keep-Alive...
  87.  
  88. //
  89. // flags field masks
  90. //
  91.  
  92. #define INTERNET_FLAGS_MASK             (INTERNET_OPEN_FLAG_NO_CACHE \
  93.                                         | INTERNET_OPEN_FLAG_RAW_DATA \
  94.                                         | INTERNET_OPEN_FLAG_USE_EXISTING \
  95.                                         | INTERNET_FLAG_ASYNC \
  96.                                         | INTERNET_FLAG_KEEP_CONNECTION \
  97.                                         )
  98.  
  99. #define INTERNET_OPTIONS_MASK           (~INTERNET_FLAGS_MASK)
  100.  
  101. //
  102. // INTERNET_NO_CALLBACK - if this value is presented as the dwContext parameter
  103. // then no call-backs will be made for that API
  104. //
  105.  
  106. #define INTERNET_NO_CALLBACK            0
  107.  
  108. //
  109. // structures/types
  110. //
  111.  
  112. //
  113. // prototypes
  114. //
  115.  
  116. INTERNETAPI
  117. HINTERNET
  118. WINAPI
  119. InternetOpenA(
  120.     IN LPCSTR lpszCallerName,
  121.     IN DWORD dwAccessType,
  122.     IN LPCSTR lpszProxyName OPTIONAL,
  123.     IN INTERNET_PORT nProxyPort,
  124.     IN DWORD dwFlags
  125.     );
  126. INTERNETAPI
  127. HINTERNET
  128. WINAPI
  129. InternetOpenW(
  130.     IN LPCWSTR lpszCallerName,
  131.     IN DWORD dwAccessType,
  132.     IN LPCWSTR lpszProxyName OPTIONAL,
  133.     IN INTERNET_PORT nProxyPort,
  134.     IN DWORD dwFlags
  135.     );
  136. #ifdef UNICODE
  137. #define InternetOpen  InternetOpenW
  138. #else
  139. #define InternetOpen  InternetOpenA
  140. #endif // !UNICODE
  141.  
  142. //
  143. // access types for InternetOpen()
  144. //
  145.  
  146. #define PRE_CONFIG_INTERNET_ACCESS  0   // use default
  147. #define LOCAL_INTERNET_ACCESS       1   // direct to Internet
  148. #define GATEWAY_INTERNET_ACCESS     2   // Internet via gateway
  149. #define CERN_PROXY_INTERNET_ACCESS  3   // Internet via CERN proxy
  150.  
  151. INTERNETAPI
  152. BOOL
  153. WINAPI
  154. InternetCloseHandle(
  155.     IN HINTERNET hInternet
  156.     );
  157.  
  158. INTERNETAPI
  159. HINTERNET
  160. WINAPI
  161. InternetConnectA(
  162.     IN HINTERNET hInternetSession,
  163.     IN LPCSTR lpszServerName,
  164.     IN INTERNET_PORT nServerPort,
  165.     IN LPCSTR lpszUsername OPTIONAL,
  166.     IN LPCSTR lpszPassword OPTIONAL,
  167.     IN DWORD dwService,
  168.     IN DWORD dwFlags,
  169.     IN DWORD dwContext
  170.     );
  171. INTERNETAPI
  172. HINTERNET
  173. WINAPI
  174. InternetConnectW(
  175.     IN HINTERNET hInternetSession,
  176.     IN LPCWSTR lpszServerName,
  177.     IN INTERNET_PORT nServerPort,
  178.     IN LPCWSTR lpszUsername OPTIONAL,
  179.     IN LPCWSTR lpszPassword OPTIONAL,
  180.     IN DWORD dwService,
  181.     IN DWORD dwFlags,
  182.     IN DWORD dwContext
  183.     );
  184. #ifdef UNICODE
  185. #define InternetConnect  InternetConnectW
  186. #else
  187. #define InternetConnect  InternetConnectA
  188. #endif // !UNICODE
  189.  
  190. //
  191. // service types for InternetConnect()
  192. //
  193.  
  194. #define INTERNET_SERVICE_FTP    1
  195. #define INTERNET_SERVICE_GOPHER 2
  196. #define INTERNET_SERVICE_HTTP   3
  197.  
  198. //
  199. // flags for InternetConnect()
  200. //
  201.  
  202. #define INTERNET_CONNECT_FLAG_PASSIVE   0x00000001
  203.  
  204. INTERNETAPI
  205. HINTERNET
  206. WINAPI
  207. InternetOpenUrlA(
  208.     IN HINTERNET hInternetSession,
  209.     IN LPCSTR lpszUrl,
  210.     IN LPCSTR lpszHeaders,
  211.     IN DWORD dwHeadersLength,
  212.     IN DWORD dwFlags,
  213.     IN DWORD dwContext
  214.     );
  215. INTERNETAPI
  216. HINTERNET
  217. WINAPI
  218. InternetOpenUrlW(
  219.     IN HINTERNET hInternetSession,
  220.     IN LPCWSTR lpszUrl,
  221.     IN LPCWSTR lpszHeaders,
  222.     IN DWORD dwHeadersLength,
  223.     IN DWORD dwFlags,
  224.     IN DWORD dwContext
  225.     );
  226. #ifdef UNICODE
  227. #define InternetOpenUrl  InternetOpenUrlW
  228. #else
  229. #define InternetOpenUrl  InternetOpenUrlA
  230. #endif // !UNICODE
  231.  
  232. INTERNETAPI
  233. BOOL
  234. WINAPI
  235. InternetReadFile(
  236.     IN HINTERNET hFile,
  237.     IN LPVOID lpBuffer,
  238.     IN DWORD dwNumberOfBytesToRead,
  239.     OUT LPDWORD lpdwNumberOfBytesRead
  240.     );
  241.  
  242. INTERNETAPI
  243. BOOL
  244. WINAPI
  245. InternetWriteFile(
  246.     IN HINTERNET hFile,
  247.     IN LPVOID lpBuffer,
  248.     IN DWORD dwNumberOfBytesToWrite,
  249.     OUT LPDWORD lpdwNumberOfBytesWritten
  250.     );
  251.  
  252. INTERNETAPI
  253. BOOL
  254. WINAPI
  255. InternetFindNextFileA(
  256.     IN HINTERNET hFind,
  257.     OUT LPVOID lpvFindData
  258.     );
  259. INTERNETAPI
  260. BOOL
  261. WINAPI
  262. InternetFindNextFileW(
  263.     IN HINTERNET hFind,
  264.     OUT LPVOID lpvFindData
  265.     );
  266. #ifdef UNICODE
  267. #define InternetFindNextFile  InternetFindNextFileW
  268. #else
  269. #define InternetFindNextFile  InternetFindNextFileA
  270. #endif // !UNICODE
  271.  
  272. INTERNETAPI
  273. BOOL
  274. WINAPI
  275. InternetQueryOption(
  276.     IN HINTERNET hInternet OPTIONAL,
  277.     IN DWORD dwOption,
  278.     OUT LPVOID lpBuffer OPTIONAL,
  279.     IN OUT LPDWORD lpdwBufferLength
  280.     );
  281.  
  282. INTERNETAPI
  283. BOOL
  284. WINAPI
  285. InternetSetOption(
  286.     IN HINTERNET hInternet OPTIONAL,
  287.     IN DWORD dwOption,
  288.     IN LPVOID lpBuffer,
  289.     IN DWORD dwBufferLength
  290.     );
  291.  
  292. //
  293. // options manifests for Internet{Query|Set}Option
  294. //
  295.  
  296. #define INTERNET_OPTION_CALLBACK                1
  297. #define INTERNET_OPTION_CONNECT_TIMEOUT         2
  298. #define INTERNET_OPTION_CONNECT_RETRIES         3
  299. #define INTERNET_OPTION_CONNECT_BACKOFF         4
  300. #define INTERNET_OPTION_SEND_TIMEOUT            5
  301. #define INTERNET_OPTION_CONTROL_SEND_TIMEOUT    INTERNET_OPTION_SEND_TIMEOUT
  302. #define INTERNET_OPTION_RECEIVE_TIMEOUT         6
  303. #define INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT INTERNET_OPTION_RECEIVE_TIMEOUT
  304. #define INTERNET_OPTION_DATA_SEND_TIMEOUT       7
  305. #define INTERNET_OPTION_DATA_RECEIVE_TIMEOUT    8
  306. #define INTERNET_OPTION_HANDLE_TYPE             9
  307. #define INTERNET_OPTION_CONTEXT_VALUE           10
  308. #define INTERNET_OPTION_NAME_RES_THREAD         11
  309. #define INTERNET_OPTION_READ_BUFFER_SIZE        12
  310. #define INTERNET_OPTION_WRITE_BUFFER_SIZE       13
  311. #define INTERNET_OPTION_GATEWAY_NAME            14
  312.  
  313. #define INTERNET_FIRST_OPTION                   INTERNET_OPTION_CALLBACK
  314. #define INTERNET_LAST_OPTION                    INTERNET_OPTION_GATEWAY_NAME
  315.  
  316. //
  317. // handle types
  318. //
  319.  
  320. #define INTERNET_HANDLE_TYPE_INTERNET           1
  321. #define INTERNET_HANDLE_TYPE_CONNECT_FTP        2
  322. #define INTERNET_HANDLE_TYPE_CONNECT_GOPHER     3
  323. #define INTERNET_HANDLE_TYPE_CONNECT_HTTP       4
  324. #define INTERNET_HANDLE_TYPE_FTP_FIND           5
  325. #define INTERNET_HANDLE_TYPE_FTP_FIND_HTML      6
  326. #define INTERNET_HANDLE_TYPE_FTP_FILE           7
  327. #define INTERNET_HANDLE_TYPE_FTP_FILE_HTML      8
  328. #define INTERNET_HANDLE_TYPE_GOPHER_FIND        9
  329. #define INTERNET_HANDLE_TYPE_GOPHER_FIND_HTML   10
  330. #define INTERNET_HANDLE_TYPE_GOPHER_FILE        11
  331. #define INTERNET_HANDLE_TYPE_GOPHER_FILE_HTML   12
  332. #define INTERNET_HANDLE_TYPE_HTTP_REQUEST       13
  333.  
  334. INTERNETAPI
  335. BOOL
  336. WINAPI
  337. InternetGetLastResponseInfoA(
  338.     OUT LPDWORD lpdwError,
  339.     OUT LPSTR lpszBuffer OPTIONAL,
  340.     IN OUT LPDWORD lpdwBufferLength
  341.     );
  342. INTERNETAPI
  343. BOOL
  344. WINAPI
  345. InternetGetLastResponseInfoW(
  346.     OUT LPDWORD lpdwError,
  347.     OUT LPWSTR lpszBuffer OPTIONAL,
  348.     IN OUT LPDWORD lpdwBufferLength
  349.     );
  350. #ifdef UNICODE
  351. #define InternetGetLastResponseInfo  InternetGetLastResponseInfoW
  352. #else
  353. #define InternetGetLastResponseInfo  InternetGetLastResponseInfoA
  354. #endif // !UNICODE
  355.  
  356.  
  357. //
  358. // callback function for InternetSetStatusCallback
  359. //
  360.  
  361. typedef
  362. VOID
  363. (CALLBACK * INTERNET_STATUS_CALLBACK)(
  364.     IN DWORD dwContext,
  365.     IN DWORD dwInternetStatus,
  366.     IN LPVOID lpvStatusInformation OPTIONAL,
  367.     IN DWORD dwStatusInformationLength
  368.     );
  369.  
  370. INTERNETAPI
  371. INTERNET_STATUS_CALLBACK
  372. WINAPI
  373. InternetSetStatusCallback(
  374.     IN INTERNET_STATUS_CALLBACK lpfnInternetCallback
  375.     );
  376.  
  377. //
  378. // status manifests for Internet status callback
  379. //
  380.  
  381. #define INTERNET_STATUS_RESOLVING_NAME          10
  382. #define INTERNET_STATUS_NAME_RESOLVED           11
  383. #define INTERNET_STATUS_CONNECTING_TO_SERVER    20
  384. #define INTERNET_STATUS_CONNECTED_TO_SERVER     21
  385. #define INTERNET_STATUS_SENDING_REQUEST         30
  386. #define INTERNET_STATUS_REQUEST_SENT            31
  387. #define INTERNET_STATUS_RECEIVING_RESPONSE      40
  388. #define INTERNET_STATUS_RESPONSE_RECEIVED       41
  389. #define INTERNET_STATUS_CTL_RESPONSE_RECEIVED   42  // FTP-only: response on control channel
  390. #define INTERNET_STATUS_CLOSING_CONNECTION      50
  391. #define INTERNET_STATUS_CONNECTION_CLOSED       51
  392. #define INTERNET_STATUS_HANDLE_CREATED          60
  393. #define INTERNET_STATUS_REQUEST_COMPLETE        100
  394.  
  395. //
  396. // if the following value is returned by InternetSetStatusCallback, then
  397. // probably an invalid (non-code) address was supplied for the callback
  398. //
  399.  
  400. #define INVALID_INTERNET_STATUS_CALLBACK        ((INTERNET_STATUS_CALLBACK)(-1L))
  401.  
  402. //
  403. // FTP
  404. //
  405.  
  406. //
  407. // manifests
  408. //
  409.  
  410. #define FTP_TRANSFER_TYPE_UNKNOWN   0x00000000
  411. #define FTP_TRANSFER_TYPE_ASCII     0x00000001
  412. #define FTP_TRANSFER_TYPE_BINARY    0x00000002
  413.  
  414. #define FTP_TRANSFER_TYPE_MASK      0x00000003
  415.  
  416. //
  417. // prototypes
  418. //
  419.  
  420. INTERNETAPI
  421. HINTERNET
  422. WINAPI
  423. FtpFindFirstFileA(
  424.     IN HINTERNET hFtpSession,
  425.     IN LPCSTR lpszSearchFile OPTIONAL,
  426.     OUT LPWIN32_FIND_DATA lpFindFileData OPTIONAL,
  427.     IN DWORD dwContext
  428.     );
  429. INTERNETAPI
  430. HINTERNET
  431. WINAPI
  432. FtpFindFirstFileW(
  433.     IN HINTERNET hFtpSession,
  434.     IN LPCWSTR lpszSearchFile OPTIONAL,
  435.     OUT LPWIN32_FIND_DATA lpFindFileData OPTIONAL,
  436.     IN DWORD dwContext
  437.     );
  438. #ifdef UNICODE
  439. #define FtpFindFirstFile  FtpFindFirstFileW
  440. #else
  441. #define FtpFindFirstFile  FtpFindFirstFileA
  442. #endif // !UNICODE
  443.  
  444. INTERNETAPI
  445. BOOL
  446. WINAPI
  447. FtpGetFileA(
  448.     IN HINTERNET hFtpSession,
  449.     IN LPCSTR lpszRemoteFile,
  450.     IN LPCSTR lpszNewFile,
  451.     IN BOOL fFailIfExists,
  452.     IN DWORD dwFlagsAndAttributes,
  453.     IN DWORD dwFlags,
  454.     IN DWORD dwContext
  455.     );
  456. INTERNETAPI
  457. BOOL
  458. WINAPI
  459. FtpGetFileW(
  460.     IN HINTERNET hFtpSession,
  461.     IN LPCWSTR lpszRemoteFile,
  462.     IN LPCWSTR lpszNewFile,
  463.     IN BOOL fFailIfExists,
  464.     IN DWORD dwFlagsAndAttributes,
  465.     IN DWORD dwFlags,
  466.     IN DWORD dwContext
  467.     );
  468. #ifdef UNICODE
  469. #define FtpGetFile  FtpGetFileW
  470. #else
  471. #define FtpGetFile  FtpGetFileA
  472. #endif // !UNICODE
  473.  
  474. INTERNETAPI
  475. BOOL
  476. WINAPI
  477. FtpPutFileA(
  478.     IN HINTERNET hFtpSession,
  479.     IN LPCSTR lpszLocalFile,
  480.     IN LPCSTR lpszNewRemoteFile,
  481.     IN DWORD dwFlags,
  482.     IN DWORD dwContext
  483.     );
  484. INTERNETAPI
  485. BOOL
  486. WINAPI
  487. FtpPutFileW(
  488.     IN HINTERNET hFtpSession,
  489.     IN LPCWSTR lpszLocalFile,
  490.     IN LPCWSTR lpszNewRemoteFile,
  491.     IN DWORD dwFlags,
  492.     IN DWORD dwContext
  493.     );
  494. #ifdef UNICODE
  495. #define FtpPutFile  FtpPutFileW
  496. #else
  497. #define FtpPutFile  FtpPutFileA
  498. #endif // !UNICODE
  499.  
  500. INTERNETAPI
  501. BOOL
  502. WINAPI
  503. FtpDeleteFileA(
  504.     IN HINTERNET hFtpSession,
  505.     IN LPCSTR lpszFileName
  506.     );
  507. INTERNETAPI
  508. BOOL
  509. WINAPI
  510. FtpDeleteFileW(
  511.     IN HINTERNET hFtpSession,
  512.     IN LPCWSTR lpszFileName
  513.     );
  514. #ifdef UNICODE
  515. #define FtpDeleteFile  FtpDeleteFileW
  516. #else
  517. #define FtpDeleteFile  FtpDeleteFileA
  518. #endif // !UNICODE
  519.  
  520. INTERNETAPI
  521. BOOL
  522. WINAPI
  523. FtpRenameFileA(
  524.     IN HINTERNET hFtpSession,
  525.     IN LPCSTR lpszExisting,
  526.     IN LPCSTR lpszNew
  527.     );
  528. INTERNETAPI
  529. BOOL
  530. WINAPI
  531. FtpRenameFileW(
  532.     IN HINTERNET hFtpSession,
  533.     IN LPCWSTR lpszExisting,
  534.     IN LPCWSTR lpszNew
  535.     );
  536. #ifdef UNICODE
  537. #define FtpRenameFile  FtpRenameFileW
  538. #else
  539. #define FtpRenameFile  FtpRenameFileA
  540. #endif // !UNICODE
  541.  
  542. INTERNETAPI
  543. HINTERNET
  544. WINAPI
  545. FtpOpenFileA(
  546.     IN HINTERNET hFtpSession,
  547.     IN LPCSTR lpszFileName,
  548.     IN DWORD dwAccess,
  549.     IN DWORD dwFlags,
  550.     IN DWORD dwContext
  551.     );
  552. INTERNETAPI
  553. HINTERNET
  554. WINAPI
  555. FtpOpenFileW(
  556.     IN HINTERNET hFtpSession,
  557.     IN LPCWSTR lpszFileName,
  558.     IN DWORD dwAccess,
  559.     IN DWORD dwFlags,
  560.     IN DWORD dwContext
  561.     );
  562. #ifdef UNICODE
  563. #define FtpOpenFile  FtpOpenFileW
  564. #else
  565. #define FtpOpenFile  FtpOpenFileA
  566. #endif // !UNICODE
  567.  
  568. INTERNETAPI
  569. BOOL
  570. WINAPI
  571. FtpCreateDirectoryA(
  572.     IN HINTERNET hFtpSession,
  573.     IN LPCSTR lpszDirectory
  574.     );
  575. INTERNETAPI
  576. BOOL
  577. WINAPI
  578. FtpCreateDirectoryW(
  579.     IN HINTERNET hFtpSession,
  580.     IN LPCWSTR lpszDirectory
  581.     );
  582. #ifdef UNICODE
  583. #define FtpCreateDirectory  FtpCreateDirectoryW
  584. #else
  585. #define FtpCreateDirectory  FtpCreateDirectoryA
  586. #endif // !UNICODE
  587.  
  588. INTERNETAPI
  589. BOOL
  590. WINAPI
  591. FtpRemoveDirectoryA(
  592.     IN HINTERNET hFtpSession,
  593.     IN LPCSTR lpszDirectory
  594.     );
  595. INTERNETAPI
  596. BOOL
  597. WINAPI
  598. FtpRemoveDirectoryW(
  599.     IN HINTERNET hFtpSession,
  600.     IN LPCWSTR lpszDirectory
  601.     );
  602. #ifdef UNICODE
  603. #define FtpRemoveDirectory  FtpRemoveDirectoryW
  604. #else
  605. #define FtpRemoveDirectory  FtpRemoveDirectoryA
  606. #endif // !UNICODE
  607.  
  608. INTERNETAPI
  609. BOOL
  610. WINAPI
  611. FtpSetCurrentDirectoryA(
  612.     IN HINTERNET hFtpSession,
  613.     IN LPCSTR lpszDirectory
  614.     );
  615. INTERNETAPI
  616. BOOL
  617. WINAPI
  618. FtpSetCurrentDirectoryW(
  619.     IN HINTERNET hFtpSession,
  620.     IN LPCWSTR lpszDirectory
  621.     );
  622. #ifdef UNICODE
  623. #define FtpSetCurrentDirectory  FtpSetCurrentDirectoryW
  624. #else
  625. #define FtpSetCurrentDirectory  FtpSetCurrentDirectoryA
  626. #endif // !UNICODE
  627.  
  628. INTERNETAPI
  629. BOOL
  630. WINAPI
  631. FtpGetCurrentDirectoryA(
  632.     IN HINTERNET hFtpSession,
  633.     OUT LPSTR lpszCurrentDirectory,
  634.     IN OUT LPDWORD lpdwCurrentDirectory
  635.     );
  636. INTERNETAPI
  637. BOOL
  638. WINAPI
  639. FtpGetCurrentDirectoryW(
  640.     IN HINTERNET hFtpSession,
  641.     OUT LPWSTR lpszCurrentDirectory,
  642.     IN OUT LPDWORD lpdwCurrentDirectory
  643.     );
  644. #ifdef UNICODE
  645. #define FtpGetCurrentDirectory  FtpGetCurrentDirectoryW
  646. #else
  647. #define FtpGetCurrentDirectory  FtpGetCurrentDirectoryA
  648. #endif // !UNICODE
  649.  
  650. INTERNETAPI
  651. BOOL
  652. WINAPI
  653. FtpCommandA(
  654.     IN HINTERNET hFtpSession,
  655.     IN BOOL fExpectResponse,
  656.     IN DWORD dwFlags,
  657.     IN LPCSTR lpszCommand,
  658.     IN DWORD dwContext
  659.     );
  660. INTERNETAPI
  661. BOOL
  662. WINAPI
  663. FtpCommandW(
  664.     IN HINTERNET hFtpSession,
  665.     IN BOOL fExpectResponse,
  666.     IN DWORD dwFlags,
  667.     IN LPCWSTR lpszCommand,
  668.     IN DWORD dwContext
  669.     );
  670. #ifdef UNICODE
  671. #define FtpCommand  FtpCommandW
  672. #else
  673. #define FtpCommand  FtpCommandA
  674. #endif // !UNICODE
  675.  
  676. //
  677. // Gopher
  678. //
  679.  
  680. //
  681. // manifests
  682. //
  683.  
  684. //
  685. // string field lengths (in characters, not bytes)
  686. //
  687.  
  688. #define MAX_GOPHER_DISPLAY_TEXT     128
  689. #define MAX_GOPHER_SELECTOR_TEXT    256
  690. #define MAX_GOPHER_HOST_NAME        INTERNET_MAX_HOST_NAME_LENGTH
  691. #define MAX_GOPHER_LOCATOR_LENGTH   (1                                  \
  692.                                     + MAX_GOPHER_DISPLAY_TEXT           \
  693.                                     + 1                                 \
  694.                                     + MAX_GOPHER_SELECTOR_TEXT          \
  695.                                     + 1                                 \
  696.                                     + MAX_GOPHER_HOST_NAME              \
  697.                                     + 1                                 \
  698.                                     + INTERNET_MAX_PORT_NUMBER_LENGTH   \
  699.                                     + 1                                 \
  700.                                     + 1                                 \
  701.                                     + 2                                 \
  702.                                     )
  703.  
  704. //
  705. // structures/types
  706. //
  707.  
  708. //
  709. // GOPHER_FIND_DATA - returns the results of a GopherFindFirstFile()/
  710. // InternetFindNextFile() request
  711. //
  712.  
  713. typedef struct {
  714.  
  715.     //
  716.     // DisplayString - points to the string to be displayed by the client (i.e.
  717.     // the file or directory name)
  718.     //
  719.  
  720.     TCHAR DisplayString[MAX_GOPHER_DISPLAY_TEXT + 1];
  721.  
  722.     //
  723.     // GopherType - bitmap which describes the item returned. See below
  724.     //
  725.  
  726.     DWORD GopherType;
  727.  
  728.     //
  729.     // SizeLow and SizeHigh - (approximate) size of the item, if the gopher
  730.     // server reports it
  731.     //
  732.  
  733.     DWORD SizeLow;
  734.     DWORD SizeHigh;
  735.  
  736.     //
  737.     // LastModificationTime - time in Win32 format that this item was last
  738.     // modified, if the gopher server reports it
  739.     //
  740.  
  741.     FILETIME LastModificationTime;
  742.  
  743.     //
  744.     // Locator - the gopher locator string returned from the server, or created
  745.     // via GopherCreateLocator
  746.     //
  747.  
  748.     TCHAR Locator[MAX_GOPHER_LOCATOR_LENGTH + 1];
  749.  
  750. } GOPHER_FIND_DATA, *LPGOPHER_FIND_DATA;
  751.  
  752. //
  753. // manifests for GopherType
  754. //
  755.  
  756. #define GOPHER_TYPE_TEXT_FILE       0x00000001
  757. #define GOPHER_TYPE_DIRECTORY       0x00000002
  758. #define GOPHER_TYPE_CSO             0x00000004
  759. #define GOPHER_TYPE_ERROR           0x00000008
  760. #define GOPHER_TYPE_MAC_BINHEX      0x00000010
  761. #define GOPHER_TYPE_DOS_ARCHIVE     0x00000020
  762. #define GOPHER_TYPE_UNIX_UUENCODED  0x00000040
  763. #define GOPHER_TYPE_INDEX_SERVER    0x00000080
  764. #define GOPHER_TYPE_TELNET          0x00000100
  765. #define GOPHER_TYPE_BINARY          0x00000200
  766. #define GOPHER_TYPE_REDUNDANT       0x00000400
  767. #define GOPHER_TYPE_TN3270          0x00000800
  768. #define GOPHER_TYPE_GIF             0x00001000
  769. #define GOPHER_TYPE_IMAGE           0x00002000
  770. #define GOPHER_TYPE_BITMAP          0x00004000
  771. #define GOPHER_TYPE_MOVIE           0x00008000
  772. #define GOPHER_TYPE_SOUND           0x00010000
  773. #define GOPHER_TYPE_HTML            0x00020000
  774. #define GOPHER_TYPE_PDF             0x00040000
  775. #define GOPHER_TYPE_CALENDAR        0x00080000
  776. #define GOPHER_TYPE_INLINE          0x00100000
  777. #define GOPHER_TYPE_UNKNOWN         0x20000000
  778. #define GOPHER_TYPE_ASK             0x40000000
  779. #define GOPHER_TYPE_GOPHER_PLUS     0x80000000
  780.  
  781. //
  782. // gopher type macros
  783. //
  784.  
  785. #define IS_GOPHER_FILE(type)            (BOOL)(((type) & GOPHER_TYPE_FILE_MASK) ? TRUE : FALSE)
  786. #define IS_GOPHER_DIRECTORY(type)       (BOOL)(((type) & GOPHER_TYPE_DIRECTORY) ? TRUE : FALSE)
  787. #define IS_GOPHER_PHONE_SERVER(type)    (BOOL)(((type) & GOPHER_TYPE_CSO) ? TRUE : FALSE)
  788. #define IS_GOPHER_ERROR(type)           (BOOL)(((type) & GOPHER_TYPE_ERROR) ? TRUE : FALSE)
  789. #define IS_GOPHER_INDEX_SERVER(type)    (BOOL)(((type) & GOPHER_TYPE_INDEX_SERVER) ? TRUE : FALSE)
  790. #define IS_GOPHER_TELNET_SESSION(type)  (BOOL)(((type) & GOPHER_TYPE_TELNET) ? TRUE : FALSE)
  791. #define IS_GOPHER_BACKUP_SERVER(type)   (BOOL)(((type) & GOPHER_TYPE_REDUNDANT) ? TRUE : FALSE)
  792. #define IS_GOPHER_TN3270_SESSION(type)  (BOOL)(((type) & GOPHER_TYPE_TN3270) ? TRUE : FALSE)
  793. #define IS_GOPHER_ASK(type)             (BOOL)(((type) & GOPHER_TYPE_ASK) ? TRUE : FALSE)
  794. #define IS_GOPHER_PLUS(type)            (BOOL)(((type) & GOPHER_TYPE_GOPHER_PLUS) ? TRUE : FALSE)
  795.  
  796. #define IS_GOPHER_TYPE_KNOWN(type)      (BOOL)(((type) & GOPHER_TYPE_UNKNOWN) ? FALSE : TRUE)
  797.  
  798. //
  799. // GOPHER_TYPE_FILE_MASK - use this to determine if a locator identifies a
  800. // (known) file type
  801. //
  802.  
  803. #define GOPHER_TYPE_FILE_MASK       (GOPHER_TYPE_TEXT_FILE          \
  804.                                     | GOPHER_TYPE_MAC_BINHEX        \
  805.                                     | GOPHER_TYPE_DOS_ARCHIVE       \
  806.                                     | GOPHER_TYPE_UNIX_UUENCODED    \
  807.                                     | GOPHER_TYPE_BINARY            \
  808.                                     | GOPHER_TYPE_GIF               \
  809.                                     | GOPHER_TYPE_IMAGE             \
  810.                                     | GOPHER_TYPE_BITMAP            \
  811.                                     | GOPHER_TYPE_MOVIE             \
  812.                                     | GOPHER_TYPE_SOUND             \
  813.                                     | GOPHER_TYPE_HTML              \
  814.                                     | GOPHER_TYPE_PDF               \
  815.                                     | GOPHER_TYPE_CALENDAR          \
  816.                                     | GOPHER_TYPE_INLINE            \
  817.                                     )
  818.  
  819. //
  820. // structured gopher attributes (as defined in gopher+ protocol document)
  821. //
  822.  
  823. typedef struct {
  824.     LPCTSTR Comment;
  825.     LPCTSTR EmailAddress;
  826. } GOPHER_ADMIN_ATTRIBUTE_TYPE, *LPGOPHER_ADMIN_ATTRIBUTE_TYPE;
  827.  
  828. typedef struct {
  829.     FILETIME DateAndTime;
  830. } GOPHER_MOD_DATE_ATTRIBUTE_TYPE, *LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE;
  831.  
  832. typedef struct {
  833.     DWORD Ttl;
  834. } GOPHER_TTL_ATTRIBUTE_TYPE, *LPGOPHER_TTL_ATTRIBUTE_TYPE;
  835.  
  836. typedef struct {
  837.     INT Score;
  838. } GOPHER_SCORE_ATTRIBUTE_TYPE, *LPGOPHER_SCORE_ATTRIBUTE_TYPE;
  839.  
  840. typedef struct {
  841.     INT LowerBound;
  842.     INT UpperBound;
  843. } GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, *LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE;
  844.  
  845. typedef struct {
  846.     LPCTSTR Site;
  847. } GOPHER_SITE_ATTRIBUTE_TYPE, *LPGOPHER_SITE_ATTRIBUTE_TYPE;
  848.  
  849. typedef struct {
  850.     LPCTSTR Organization;
  851. } GOPHER_ORGANIZATION_ATTRIBUTE_TYPE, *LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPE;
  852.  
  853. typedef struct {
  854.     LPCTSTR Location;
  855. } GOPHER_LOCATION_ATTRIBUTE_TYPE, *LPGOPHER_LOCATION_ATTRIBUTE_TYPE;
  856.  
  857. typedef struct {
  858.     INT DegreesNorth;
  859.     INT MinutesNorth;
  860.     INT SecondsNorth;
  861.     INT DegreesEast;
  862.     INT MinutesEast;
  863.     INT SecondsEast;
  864. } GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, *LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE;
  865.  
  866. typedef struct {
  867.     INT Zone;
  868. } GOPHER_TIMEZONE_ATTRIBUTE_TYPE, *LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE;
  869.  
  870. typedef struct {
  871.     LPCTSTR Provider;
  872. } GOPHER_PROVIDER_ATTRIBUTE_TYPE, *LPGOPHER_PROVIDER_ATTRIBUTE_TYPE;
  873.  
  874. typedef struct {
  875.     LPCTSTR Version;
  876. } GOPHER_VERSION_ATTRIBUTE_TYPE, *LPGOPHER_VERSION_ATTRIBUTE_TYPE;
  877.  
  878. typedef struct {
  879.     LPCTSTR ShortAbstract;
  880.     LPCTSTR AbstractFile;
  881. } GOPHER_ABSTRACT_ATTRIBUTE_TYPE, *LPGOPHER_ABSTRACT_ATTRIBUTE_TYPE;
  882.  
  883. typedef struct {
  884.     LPCTSTR ContentType;
  885.     LPCTSTR Language;
  886.     DWORD Size;
  887. } GOPHER_VIEW_ATTRIBUTE_TYPE, *LPGOPHER_VIEW_ATTRIBUTE_TYPE;
  888.  
  889. typedef struct {
  890.     BOOL TreeWalk;
  891. } GOPHER_VERONICA_ATTRIBUTE_TYPE, *LPGOPHER_VERONICA_ATTRIBUTE_TYPE;
  892.  
  893. typedef struct {
  894.     LPCTSTR QuestionType;
  895.     LPCTSTR QuestionText;
  896. } GOPHER_ASK_ATTRIBUTE_TYPE, *LPGOPHER_ASK_ATTRIBUTE_TYPE;
  897.  
  898. //
  899. // GOPHER_UNKNOWN_ATTRIBUTE_TYPE - this is returned if we retrieve an attribute
  900. // that is not specified in the current gopher/gopher+ documentation. It is up
  901. // to the application to parse the information
  902. //
  903.  
  904. typedef struct {
  905.     LPCTSTR Text;
  906. } GOPHER_UNKNOWN_ATTRIBUTE_TYPE, *LPGOPHER_UNKNOWN_ATTRIBUTE_TYPE;
  907.  
  908. //
  909. // GOPHER_ATTRIBUTE_TYPE - returned in the user's buffer when an enumerated
  910. // GopherGetAttribute call is made
  911. //
  912.  
  913. typedef struct {
  914.     DWORD CategoryId;   // e.g. GOPHER_CATEGORY_ID_ADMIN
  915.     DWORD AttributeId;  // e.g. GOPHER_ATTRIBUTE_ID_ADMIN
  916.     union {
  917.         GOPHER_ADMIN_ATTRIBUTE_TYPE Admin;
  918.         GOPHER_MOD_DATE_ATTRIBUTE_TYPE ModDate;
  919.         GOPHER_TTL_ATTRIBUTE_TYPE Ttl;
  920.         GOPHER_SCORE_ATTRIBUTE_TYPE Score;
  921.         GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE ScoreRange;
  922.         GOPHER_SITE_ATTRIBUTE_TYPE Site;
  923.         GOPHER_ORGANIZATION_ATTRIBUTE_TYPE Organization;
  924.         GOPHER_LOCATION_ATTRIBUTE_TYPE Location;
  925.         GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE GeographicalLocation;
  926.         GOPHER_TIMEZONE_ATTRIBUTE_TYPE TimeZone;
  927.         GOPHER_PROVIDER_ATTRIBUTE_TYPE Provider;
  928.         GOPHER_VERSION_ATTRIBUTE_TYPE Version;
  929.         GOPHER_ABSTRACT_ATTRIBUTE_TYPE Abstract;
  930.         GOPHER_VIEW_ATTRIBUTE_TYPE View;
  931.         GOPHER_VERONICA_ATTRIBUTE_TYPE Veronica;
  932.         GOPHER_ASK_ATTRIBUTE_TYPE Ask;
  933.         GOPHER_UNKNOWN_ATTRIBUTE_TYPE Unknown;
  934.     } AttributeType;
  935. } GOPHER_ATTRIBUTE_TYPE, *LPGOPHER_ATTRIBUTE_TYPE;
  936.  
  937. #define MAX_GOPHER_CATEGORY_NAME    128     // arbitrary
  938. #define MAX_GOPHER_ATTRIBUTE_NAME   128     //     "
  939. #define MIN_GOPHER_ATTRIBUTE_LENGTH 256     //     "
  940.  
  941. //
  942. // known gopher attribute categories. See below for ordinals
  943. //
  944.  
  945. #define GOPHER_INFO_CATEGORY        TEXT("+INFO")
  946. #define GOPHER_ADMIN_CATEGORY       TEXT("+ADMIN")
  947. #define GOPHER_VIEWS_CATEGORY       TEXT("+VIEWS")
  948. #define GOPHER_ABSTRACT_CATEGORY    TEXT("+ABSTRACT")
  949. #define GOPHER_VERONICA_CATEGORY    TEXT("+VERONICA")
  950.  
  951. //
  952. // known gopher attributes. These are the attribute names as defined in the
  953. // gopher+ protocol document
  954. //
  955.  
  956. #define GOPHER_ADMIN_ATTRIBUTE      TEXT("Admin")
  957. #define GOPHER_MOD_DATE_ATTRIBUTE   TEXT("Mod-Date")
  958. #define GOPHER_TTL_ATTRIBUTE        TEXT("TTL")
  959. #define GOPHER_SCORE_ATTRIBUTE      TEXT("Score")
  960. #define GOPHER_RANGE_ATTRIBUTE      TEXT("Score-range")
  961. #define GOPHER_SITE_ATTRIBUTE       TEXT("Site")
  962. #define GOPHER_ORG_ATTRIBUTE        TEXT("Org")
  963. #define GOPHER_LOCATION_ATTRIBUTE   TEXT("Loc")
  964. #define GOPHER_GEOG_ATTRIBUTE       TEXT("Geog")
  965. #define GOPHER_TIMEZONE_ATTRIBUTE   TEXT("TZ")
  966. #define GOPHER_PROVIDER_ATTRIBUTE   TEXT("Provider")
  967. #define GOPHER_VERSION_ATTRIBUTE    TEXT("Version")
  968. #define GOPHER_ABSTRACT_ATTRIBUTE   TEXT("Abstract")
  969. #define GOPHER_VIEW_ATTRIBUTE       TEXT("View")
  970. #define GOPHER_TREEWALK_ATTRIBUTE   TEXT("treewalk")
  971.  
  972. //
  973. // identifiers for attribute strings
  974. //
  975.  
  976. #define GOPHER_ATTRIBUTE_ID_BASE        0xabcccc00
  977.  
  978. #define GOPHER_CATEGORY_ID_ALL          (GOPHER_ATTRIBUTE_ID_BASE + 1)
  979.  
  980. #define GOPHER_CATEGORY_ID_INFO         (GOPHER_ATTRIBUTE_ID_BASE + 2)
  981. #define GOPHER_CATEGORY_ID_ADMIN        (GOPHER_ATTRIBUTE_ID_BASE + 3)
  982. #define GOPHER_CATEGORY_ID_VIEWS        (GOPHER_ATTRIBUTE_ID_BASE + 4)
  983. #define GOPHER_CATEGORY_ID_ABSTRACT     (GOPHER_ATTRIBUTE_ID_BASE + 5)
  984. #define GOPHER_CATEGORY_ID_VERONICA     (GOPHER_ATTRIBUTE_ID_BASE + 6)
  985. #define GOPHER_CATEGORY_ID_ASK          (GOPHER_ATTRIBUTE_ID_BASE + 7)
  986.  
  987. #define GOPHER_CATEGORY_ID_UNKNOWN      (GOPHER_ATTRIBUTE_ID_BASE + 8)
  988.  
  989. #define GOPHER_ATTRIBUTE_ID_ALL         (GOPHER_ATTRIBUTE_ID_BASE + 9)
  990.  
  991. #define GOPHER_ATTRIBUTE_ID_ADMIN       (GOPHER_ATTRIBUTE_ID_BASE + 10)
  992. #define GOPHER_ATTRIBUTE_ID_MOD_DATE    (GOPHER_ATTRIBUTE_ID_BASE + 11)
  993. #define GOPHER_ATTRIBUTE_ID_TTL         (GOPHER_ATTRIBUTE_ID_BASE + 12)
  994. #define GOPHER_ATTRIBUTE_ID_SCORE       (GOPHER_ATTRIBUTE_ID_BASE + 13)
  995. #define GOPHER_ATTRIBUTE_ID_RANGE       (GOPHER_ATTRIBUTE_ID_BASE + 14)
  996. #define GOPHER_ATTRIBUTE_ID_SITE        (GOPHER_ATTRIBUTE_ID_BASE + 15)
  997. #define GOPHER_ATTRIBUTE_ID_ORG         (GOPHER_ATTRIBUTE_ID_BASE + 16)
  998. #define GOPHER_ATTRIBUTE_ID_LOCATION    (GOPHER_ATTRIBUTE_ID_BASE + 17)
  999. #define GOPHER_ATTRIBUTE_ID_GEOG        (GOPHER_ATTRIBUTE_ID_BASE + 18)
  1000. #define GOPHER_ATTRIBUTE_ID_TIMEZONE    (GOPHER_ATTRIBUTE_ID_BASE + 19)
  1001. #define GOPHER_ATTRIBUTE_ID_PROVIDER    (GOPHER_ATTRIBUTE_ID_BASE + 20)
  1002. #define GOPHER_ATTRIBUTE_ID_VERSION     (GOPHER_ATTRIBUTE_ID_BASE + 21)
  1003. #define GOPHER_ATTRIBUTE_ID_ABSTRACT    (GOPHER_ATTRIBUTE_ID_BASE + 22)
  1004. #define GOPHER_ATTRIBUTE_ID_VIEW        (GOPHER_ATTRIBUTE_ID_BASE + 23)
  1005. #define GOPHER_ATTRIBUTE_ID_TREEWALK    (GOPHER_ATTRIBUTE_ID_BASE + 24)
  1006.  
  1007. #define GOPHER_ATTRIBUTE_ID_UNKNOWN     (GOPHER_ATTRIBUTE_ID_BASE + 25)
  1008.  
  1009. //
  1010. // prototypes
  1011. //
  1012.  
  1013. INTERNETAPI
  1014. BOOL
  1015. WINAPI
  1016. GopherCreateLocatorA(
  1017.     IN LPCSTR lpszHost,
  1018.     IN INTERNET_PORT nServerPort,
  1019.     IN LPCSTR lpszDisplayString OPTIONAL,
  1020.     IN LPCSTR lpszSelectorString OPTIONAL,
  1021.     IN DWORD dwGopherType,
  1022.     OUT LPSTR lpszLocator OPTIONAL,
  1023.     IN OUT LPDWORD lpdwBufferLength
  1024.     );
  1025. INTERNETAPI
  1026. BOOL
  1027. WINAPI
  1028. GopherCreateLocatorW(
  1029.     IN LPCWSTR lpszHost,
  1030.     IN INTERNET_PORT nServerPort,
  1031.     IN LPCWSTR lpszDisplayString OPTIONAL,
  1032.     IN LPCWSTR lpszSelectorString OPTIONAL,
  1033.     IN DWORD dwGopherType,
  1034.     OUT LPWSTR lpszLocator OPTIONAL,
  1035.     IN OUT LPDWORD lpdwBufferLength
  1036.     );
  1037. #ifdef UNICODE
  1038. #define GopherCreateLocator  GopherCreateLocatorW
  1039. #else
  1040. #define GopherCreateLocator  GopherCreateLocatorA
  1041. #endif // !UNICODE
  1042.  
  1043. INTERNETAPI
  1044. BOOL
  1045. WINAPI
  1046. GopherGetLocatorTypeA(
  1047.     IN LPCSTR lpszLocator,
  1048.     OUT LPDWORD lpdwGopherType
  1049.     );
  1050. INTERNETAPI
  1051. BOOL
  1052. WINAPI
  1053. GopherGetLocatorTypeW(
  1054.     IN LPCWSTR lpszLocator,
  1055.     OUT LPDWORD lpdwGopherType
  1056.     );
  1057. #ifdef UNICODE
  1058. #define GopherGetLocatorType  GopherGetLocatorTypeW
  1059. #else
  1060. #define GopherGetLocatorType  GopherGetLocatorTypeA
  1061. #endif // !UNICODE
  1062.  
  1063. INTERNETAPI
  1064. HINTERNET
  1065. WINAPI
  1066. GopherFindFirstFileA(
  1067.     IN HINTERNET hGopherSession,
  1068.     IN LPCSTR lpszLocator OPTIONAL,
  1069.     IN LPCSTR lpszSearchString OPTIONAL,
  1070.     OUT LPGOPHER_FIND_DATA lpFindData OPTIONAL,
  1071.     IN DWORD dwContext
  1072.     );
  1073. INTERNETAPI
  1074. HINTERNET
  1075. WINAPI
  1076. GopherFindFirstFileW(
  1077.     IN HINTERNET hGopherSession,
  1078.     IN LPCWSTR lpszLocator OPTIONAL,
  1079.     IN LPCWSTR lpszSearchString OPTIONAL,
  1080.     OUT LPGOPHER_FIND_DATA lpFindData OPTIONAL,
  1081.     IN DWORD dwContext
  1082.     );
  1083. #ifdef UNICODE
  1084. #define GopherFindFirstFile  GopherFindFirstFileW
  1085. #else
  1086. #define GopherFindFirstFile  GopherFindFirstFileA
  1087. #endif // !UNICODE
  1088.  
  1089. INTERNETAPI
  1090. HINTERNET
  1091. WINAPI
  1092. GopherOpenFileA(
  1093.     IN HINTERNET hGopherSession,
  1094.     IN LPCSTR lpszLocator,
  1095.     IN LPCSTR lpszView OPTIONAL,
  1096.     IN DWORD dwFlags,
  1097.     IN DWORD dwContext
  1098.     );
  1099. INTERNETAPI
  1100. HINTERNET
  1101. WINAPI
  1102. GopherOpenFileW(
  1103.     IN HINTERNET hGopherSession,
  1104.     IN LPCWSTR lpszLocator,
  1105.     IN LPCWSTR lpszView OPTIONAL,
  1106.     IN DWORD dwFlags,
  1107.     IN DWORD dwContext
  1108.     );
  1109. #ifdef UNICODE
  1110. #define GopherOpenFile  GopherOpenFileW
  1111. #else
  1112. #define GopherOpenFile  GopherOpenFileA
  1113. #endif // !UNICODE
  1114.  
  1115. typedef
  1116. BOOL
  1117. (CALLBACK * GOPHER_ATTRIBUTE_ENUMERATOR)(
  1118.     LPGOPHER_ATTRIBUTE_TYPE lpAttributeInfo,
  1119.     DWORD dwError
  1120.     );
  1121.  
  1122. INTERNETAPI
  1123. BOOL
  1124. WINAPI
  1125. GopherGetAttributeA(
  1126.     IN HINTERNET hGopherSession,
  1127.     IN LPCSTR lpszLocator,
  1128.     IN LPCSTR lpszAttributeName OPTIONAL,
  1129.     OUT LPBYTE lpBuffer,
  1130.     IN DWORD dwBufferLength,
  1131.     OUT LPDWORD lpdwCharactersReturned,
  1132.     IN GOPHER_ATTRIBUTE_ENUMERATOR lpfnEnumerator OPTIONAL,
  1133.     IN DWORD dwContext
  1134.     );
  1135. INTERNETAPI
  1136. BOOL
  1137. WINAPI
  1138. GopherGetAttributeW(
  1139.     IN HINTERNET hGopherSession,
  1140.     IN LPCWSTR lpszLocator,
  1141.     IN LPCWSTR lpszAttributeName OPTIONAL,
  1142.     OUT LPBYTE lpBuffer,
  1143.     IN DWORD dwBufferLength,
  1144.     OUT LPDWORD lpdwCharactersReturned,
  1145.     IN GOPHER_ATTRIBUTE_ENUMERATOR lpfnEnumerator OPTIONAL,
  1146.     IN DWORD dwContext
  1147.     );
  1148. #ifdef UNICODE
  1149. #define GopherGetAttribute  GopherGetAttributeW
  1150. #else
  1151. #define GopherGetAttribute  GopherGetAttributeA
  1152. #endif // !UNICODE
  1153.  
  1154. INTERNETAPI
  1155. BOOL
  1156. WINAPI
  1157. GopherSendDataA(
  1158.     IN HINTERNET hGopherSession,
  1159.     IN LPCSTR lpszLocator,
  1160.     IN LPCSTR lpszBuffer,
  1161.     IN DWORD dwNumberOfCharactersToSend,
  1162.     OUT LPDWORD lpdwNumberOfCharactersSent,
  1163.     IN DWORD dwContext
  1164.     );
  1165. INTERNETAPI
  1166. BOOL
  1167. WINAPI
  1168. GopherSendDataW(
  1169.     IN HINTERNET hGopherSession,
  1170.     IN LPCWSTR lpszLocator,
  1171.     IN LPCWSTR lpszBuffer,
  1172.     IN DWORD dwNumberOfCharactersToSend,
  1173.     OUT LPDWORD lpdwNumberOfCharactersSent,
  1174.     IN DWORD dwContext
  1175.     );
  1176. #ifdef UNICODE
  1177. #define GopherSendData  GopherSendDataW
  1178. #else
  1179. #define GopherSendData  GopherSendDataA
  1180. #endif // !UNICODE
  1181.  
  1182. //
  1183. // HTTP
  1184. //
  1185.  
  1186. //
  1187. // manifests
  1188. //
  1189.  
  1190. //
  1191. //  The default HTTP port for TCP/IP connections.
  1192. //
  1193.  
  1194. #define HTTP_TCPIP_PORT         80
  1195.  
  1196.  
  1197. //
  1198. //  The default major/minor HTTP version numbers.
  1199. //
  1200.  
  1201. #define HTTP_MAJOR_VERSION      1
  1202. #define HTTP_MINOR_VERSION      0
  1203.  
  1204. #define HTTP_VERSION            TEXT("HTTP/1.0")
  1205.  
  1206. //
  1207. //  HttpQueryInfo info levels. Generally, there is one info level
  1208. //  for each potential RFC822/HTTP/MIME header that an HTTP server
  1209. //  may send as part of a request response.
  1210. //
  1211. //  The HTTP_QUERY_RAW_HEADERS info level is provided for clients
  1212. //  that choose to perform their own header parsing.
  1213. //
  1214.  
  1215. #define HTTP_QUERY_MIN                          0x0000
  1216. #define HTTP_QUERY_MIME_VERSION                 0x0000
  1217. #define HTTP_QUERY_CONTENT_TYPE                 0x0001
  1218. #define HTTP_QUERY_CONTENT_TRANSFER_ENCODING    0x0002
  1219. #define HTTP_QUERY_CONTENT_ID                   0x0003
  1220. #define HTTP_QUERY_CONTENT_DESCRIPTION          0x0004
  1221. #define HTTP_QUERY_CONTENT_LENGTH               0x0005
  1222. #define HTTP_QUERY_CONTENT_LANGUAGE             0x0006
  1223. #define HTTP_QUERY_ALLOW                        0x0007
  1224. #define HTTP_QUERY_PUBLIC                       0x0008
  1225. #define HTTP_QUERY_DATE                         0x0009
  1226. #define HTTP_QUERY_EXPIRES                      0x000A
  1227. #define HTTP_QUERY_LAST_MODIFIED                0x000B
  1228. #define HTTP_QUERY_MESSAGE_ID                   0x000C
  1229. #define HTTP_QUERY_URI                          0x000D
  1230. #define HTTP_QUERY_DERIVED_FROM                 0x000E
  1231. #define HTTP_QUERY_COST                         0x000F
  1232. #define HTTP_QUERY_LINK                         0x0010
  1233. #define HTTP_QUERY_PRAGMA                       0x0011
  1234. #define HTTP_QUERY_VERSION                      0x0012
  1235. #define HTTP_QUERY_STATUS_CODE                  0x0013
  1236. #define HTTP_QUERY_STATUS_TEXT                  0x0014
  1237. #define HTTP_QUERY_RAW_HEADERS                  0x0015
  1238. #define HTTP_QUERY_RAW_HEADERS_CRLF             0x0016
  1239. #define HTTP_QUERY_CONNECTION                   0x0017
  1240. #define HTTP_QUERY_MAX                          0x0017
  1241.  
  1242.  
  1243. //
  1244. //  HTTP Response Status Codes:
  1245. //
  1246.  
  1247. #define HTTP_STATUS_OK              200     // request completed
  1248. #define HTTP_STATUS_CREATED         201     // object created, reason = new URI
  1249. #define HTTP_STATUS_ACCEPTED        202     // async completion (TBS)
  1250. #define HTTP_STATUS_PARTIAL         203     // partial completion
  1251.  
  1252. #define HTTP_STATUS_MOVED           301     // object permanently moved
  1253. #define HTTP_STATUS_REDIRECT        302     // object temporarily moved
  1254. #define HTTP_STATUS_REDIRECT_METHOD 303     // redirection w/ new access method
  1255.  
  1256. #define HTTP_STATUS_BAD_REQUEST     400     // invalid syntax
  1257. #define HTTP_STATUS_DENIED          401     // access denied
  1258. #define HTTP_STATUS_PAYMENT_REQ     402     // payment required
  1259. #define HTTP_STATUS_FORBIDDEN       403     // request forbidden
  1260. #define HTTP_STATUS_NOT_FOUND       404     // object not found
  1261.  
  1262. #define HTTP_STATUS_SERVER_ERROR    500     // internal server error
  1263. #define HTTP_STATUS_NOT_SUPPORTED   501     // required not supported
  1264.  
  1265. //
  1266. // prototypes
  1267. //
  1268.  
  1269. INTERNETAPI
  1270. HINTERNET
  1271. WINAPI
  1272. HttpOpenRequestA(
  1273.     IN HINTERNET hHttpSession,
  1274.     IN LPCSTR lpszVerb,
  1275.     IN LPCSTR lpszObjectName,
  1276.     IN LPCSTR lpszVersion,
  1277.     IN LPCSTR lpszReferrer,
  1278.     IN LPCSTR FAR * lplpszAcceptTypes,
  1279.     IN DWORD dwFlags,
  1280.     IN DWORD dwContext
  1281.     );
  1282. INTERNETAPI
  1283. HINTERNET
  1284. WINAPI
  1285. HttpOpenRequestW(
  1286.     IN HINTERNET hHttpSession,
  1287.     IN LPCWSTR lpszVerb,
  1288.     IN LPCWSTR lpszObjectName,
  1289.     IN LPCWSTR lpszVersion,
  1290.     IN LPCWSTR lpszReferrer,
  1291.     IN LPCWSTR FAR * lplpszAcceptTypes,
  1292.     IN DWORD dwFlags,
  1293.     IN DWORD dwContext
  1294.     );
  1295. #ifdef UNICODE
  1296. #define HttpOpenRequest  HttpOpenRequestW
  1297. #else
  1298. #define HttpOpenRequest  HttpOpenRequestA
  1299. #endif // !UNICODE
  1300.  
  1301. INTERNETAPI
  1302. BOOL
  1303. WINAPI
  1304. HttpAddRequestHeadersA(
  1305.     IN HINTERNET hHttpRequest,
  1306.     IN LPCSTR lpszHeaders,
  1307.     IN DWORD dwHeadersLength
  1308.     );
  1309. INTERNETAPI
  1310. BOOL
  1311. WINAPI
  1312. HttpAddRequestHeadersW(
  1313.     IN HINTERNET hHttpRequest,
  1314.     IN LPCWSTR lpszHeaders,
  1315.     IN DWORD dwHeadersLength
  1316.     );
  1317. #ifdef UNICODE
  1318. #define HttpAddRequestHeaders  HttpAddRequestHeadersW
  1319. #else
  1320. #define HttpAddRequestHeaders  HttpAddRequestHeadersA
  1321. #endif // !UNICODE
  1322.  
  1323. INTERNETAPI
  1324. BOOL
  1325. WINAPI
  1326. HttpSendRequestA(
  1327.     IN HINTERNET hHttpRequest,
  1328.     IN LPCSTR lpszHeaders,
  1329.     IN DWORD dwHeadersLength,
  1330.     IN LPVOID lpOptional,
  1331.     IN DWORD dwOptionalLength
  1332.     );
  1333. INTERNETAPI
  1334. BOOL
  1335. WINAPI
  1336. HttpSendRequestW(
  1337.     IN HINTERNET hHttpRequest,
  1338.     IN LPCWSTR lpszHeaders,
  1339.     IN DWORD dwHeadersLength,
  1340.     IN LPVOID lpOptional,
  1341.     IN DWORD dwOptionalLength
  1342.     );
  1343. #ifdef UNICODE
  1344. #define HttpSendRequest  HttpSendRequestW
  1345. #else
  1346. #define HttpSendRequest  HttpSendRequestA
  1347. #endif // !UNICODE
  1348.  
  1349. INTERNETAPI
  1350. BOOL
  1351. WINAPI
  1352. HttpQueryInfoA(
  1353.     IN HINTERNET hHttpRequest,
  1354.     IN DWORD dwInfoLevel,
  1355.     OUT LPVOID lpvBuffer,
  1356.     IN OUT LPDWORD lpdwBufferLength
  1357.     );
  1358. INTERNETAPI
  1359. BOOL
  1360. WINAPI
  1361. HttpQueryInfoW(
  1362.     IN HINTERNET hHttpRequest,
  1363.     IN DWORD dwInfoLevel,
  1364.     OUT LPVOID lpvBuffer,
  1365.     IN OUT LPDWORD lpdwBufferLength
  1366.     );
  1367. #ifdef UNICODE
  1368. #define HttpQueryInfo  HttpQueryInfoW
  1369. #else
  1370. #define HttpQueryInfo  HttpQueryInfoA
  1371. #endif // !UNICODE
  1372.  
  1373. //#if !defined(_WINERROR_)
  1374.  
  1375. //
  1376. // Internet API error returns
  1377. //
  1378.  
  1379. #define INTERNET_ERROR_BASE                     12000
  1380.  
  1381. #define ERROR_INTERNET_OUT_OF_HANDLES           (INTERNET_ERROR_BASE + 1)
  1382. #define ERROR_INTERNET_TIMEOUT                  (INTERNET_ERROR_BASE + 2)
  1383. #define ERROR_INTERNET_EXTENDED_ERROR           (INTERNET_ERROR_BASE + 3)
  1384. #define ERROR_INTERNET_INTERNAL_ERROR           (INTERNET_ERROR_BASE + 4)
  1385. #define ERROR_INTERNET_INVALID_URL              (INTERNET_ERROR_BASE + 5)
  1386. #define ERROR_INTERNET_UNRECOGNIZED_SCHEME      (INTERNET_ERROR_BASE + 6)
  1387. #define ERROR_INTERNET_NAME_NOT_RESOLVED        (INTERNET_ERROR_BASE + 7)
  1388. #define ERROR_INTERNET_PROTOCOL_NOT_FOUND       (INTERNET_ERROR_BASE + 8)
  1389. #define ERROR_INTERNET_INVALID_OPTION           (INTERNET_ERROR_BASE + 9)
  1390. #define ERROR_INTERNET_BAD_OPTION_LENGTH        (INTERNET_ERROR_BASE + 10)
  1391. #define ERROR_INTERNET_OPTION_NOT_SETTABLE      (INTERNET_ERROR_BASE + 11)
  1392. #define ERROR_INTERNET_SHUTDOWN                 (INTERNET_ERROR_BASE + 12)
  1393. #define ERROR_INTERNET_INCORRECT_USER_NAME      (INTERNET_ERROR_BASE + 13)
  1394. #define ERROR_INTERNET_INCORRECT_PASSWORD       (INTERNET_ERROR_BASE + 14)
  1395. #define ERROR_INTERNET_LOGIN_FAILURE            (INTERNET_ERROR_BASE + 15)
  1396. #define ERROR_INTERNET_INVALID_OPERATION        (INTERNET_ERROR_BASE + 16)
  1397. #define ERROR_INTERNET_OPERATION_CANCELLED      (INTERNET_ERROR_BASE + 17)
  1398. #define ERROR_INTERNET_INCORRECT_HANDLE_TYPE    (INTERNET_ERROR_BASE + 18)
  1399. #define ERROR_INTERNET_NOT_LOCAL_HANDLE         (INTERNET_ERROR_BASE + 19)
  1400. #define ERROR_INTERNET_NOT_PROXY_REQUEST        (INTERNET_ERROR_BASE + 20)
  1401. #define ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND (INTERNET_ERROR_BASE + 21)
  1402. #define ERROR_INTERNET_BAD_REGISTRY_PARAMETER   (INTERNET_ERROR_BASE + 22)
  1403. #define ERROR_INTERNET_NO_DIRECT_ACCESS         (INTERNET_ERROR_BASE + 23)
  1404.  
  1405. //
  1406. // FTP API errors
  1407. //
  1408.  
  1409. #define ERROR_FTP_TRANSFER_IN_PROGRESS          (INTERNET_ERROR_BASE + 27)
  1410. #define ERROR_FTP_CONNECTED                     (INTERNET_ERROR_BASE + 28)
  1411. #define ERROR_FTP_DROPPED                       (INTERNET_ERROR_BASE + 29)
  1412.  
  1413. //
  1414. // gopher API errors
  1415. //
  1416.  
  1417. #define ERROR_GOPHER_PROTOCOL_ERROR             (INTERNET_ERROR_BASE + 30)
  1418. #define ERROR_GOPHER_NOT_FILE                   (INTERNET_ERROR_BASE + 31)
  1419. #define ERROR_GOPHER_DATA_ERROR                 (INTERNET_ERROR_BASE + 32)
  1420. #define ERROR_GOPHER_END_OF_DATA                (INTERNET_ERROR_BASE + 33)
  1421. #define ERROR_GOPHER_INVALID_LOCATOR            (INTERNET_ERROR_BASE + 34)
  1422. #define ERROR_GOPHER_INCORRECT_LOCATOR_TYPE     (INTERNET_ERROR_BASE + 35)
  1423. #define ERROR_GOPHER_NOT_GOPHER_PLUS            (INTERNET_ERROR_BASE + 36)
  1424. #define ERROR_GOPHER_ATTRIBUTE_NOT_FOUND        (INTERNET_ERROR_BASE + 37)
  1425. #define ERROR_GOPHER_UNKNOWN_LOCATOR            (INTERNET_ERROR_BASE + 38)
  1426.  
  1427. //
  1428. // HTTP API errors
  1429. //
  1430.  
  1431. #define ERROR_HTTP_HEADER_NOT_FOUND             (INTERNET_ERROR_BASE + 40)
  1432. #define ERROR_HTTP_DOWNLEVEL_SERVER             (INTERNET_ERROR_BASE + 41)
  1433. #define ERROR_HTTP_INVALID_SERVER_RESPONSE      (INTERNET_ERROR_BASE + 42)
  1434. #define ERROR_HTTP_CONNECTION_BUSY              (INTERNET_ERROR_BASE + 43)
  1435.  
  1436. //#endif // !defined(_WINERROR_)
  1437.  
  1438. #if defined(__cplusplus)
  1439. }
  1440. #endif
  1441.  
  1442. #endif // !defined(_WININET_)
  1443.